package br.com.gestacard.sync.entidade;




import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;

import org.hibernate.annotations.ForeignKey;

@MappedSuperclass
public abstract class Produto extends AppBaseEntity {

	
	private static final long serialVersionUID = 2400783875091039111L;

	
	
	@Id @GeneratedValue(strategy=GenerationType.AUTO, generator = "SE_PRODUTO")
	@Column (name = "ID_PRODUTO", nullable=false, length=5)
	private Long id;
	
	@Column (name = "ID_PRODUTO", nullable=false, length=5, insertable=false, updatable=false)
	private Long codigo;
	
	@Column (name = "NOME", nullable=false, length=100)
	private String nome;
	
	@Column (name = "OBSERVACAO", nullable=true, length=300)
	private String observacao;
	
	@Column (name = "QTD_ATUAL", nullable=false, length=5)
	private Long qtdAtual = 0L;
	
	@Column (name = "VLR_ULTIMA_COMPRA", nullable=false, length=5)
	private BigDecimal vlrUltimaCompra = new BigDecimal(0);

	@Column (name = "VLR_PRODUTO", nullable=false, length=10)
	private BigDecimal vlrProduto;
	
	@ManyToOne (targetEntity = TipoProdutoEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="FK_PRODUTO_TIPO_PRODUTO")
	@JoinColumn (name = "ID_TIPO_PRODUTO", nullable=false)
	private TipoProduto tipoProduto;

	@Column (name = "PRC_COMISSAO_COORDENADOR", nullable=true, length=10)
	private BigDecimal comissaoCoordenador;

	@Column (name = "PRC_COMISSAO_CAPTADOR", nullable=true, length=10)	
	private BigDecimal comissaoCaptador;


	@Enumerated(EnumType.STRING)
	@Column (name = "STATUS", nullable=false, length=1)
	private Status status = Status.A;
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id=id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome=nome;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao=observacao;
	}

	public Long getQtdAtual() {
		return qtdAtual;
	}

	public void setQtdAtual(Long qtdAtual) {
		this.qtdAtual=qtdAtual;
	}

	public BigDecimal getVlrUltimaCompra() {
		return vlrUltimaCompra;
	}

	public void setVlrUltimaCompra(BigDecimal vlrUltimaCompra) {
		this.vlrUltimaCompra=vlrUltimaCompra;
	}

	public Long getCodigo() {
		return codigo;
	}

	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public BigDecimal getVlrProduto() {
		return vlrProduto;
	}

	public void setVlrProduto(BigDecimal vlrProduto) {
		this.vlrProduto = vlrProduto;
	}

	public TipoProduto getTipoProduto() {
		return tipoProduto;
	}

	public void setTipoProduto(TipoProduto tipoProduto) {
		this.tipoProduto = tipoProduto;
	}

	public BigDecimal getComissaoCoordenador() {
		return comissaoCoordenador;
	}

	public void setComissaoCoordenador(BigDecimal comissaoCoordenador) {
		this.comissaoCoordenador = comissaoCoordenador;
	}

	public BigDecimal getComissaoCaptador() {
		return comissaoCaptador;
	}

	public void setComissaoCaptador(BigDecimal comissaoCaptador) {
		this.comissaoCaptador = comissaoCaptador;
	}

	public Status getStatus() {
		return status;
	}

	public void setStatus(Status status) {
		this.status = status;
	}

}
